package com.cmc.cloud.cmclink.doc.convert;

import com.cmc.cloud.cmclink.doc.api.document.rep.BlnoScnRespDto;
import com.cmc.cloud.cmclink.doc.api.document.req.si.BlnoScnUpdateReqDto;
import com.cmc.cloud.cmclink.doc.entity.BlnoScnDO;
import com.cmc.cloud.cmclink.doc.mq.SiEdiReqVO;
import com.cmc.cloud.cmclink.doc.vo.blnoscnvo.BlnoScnCreateReqVO;
import com.cmc.cloud.cmclink.doc.vo.blnoscnvo.BlnoScnRespVO;
import com.cmc.cloud.cmclink.doc.vo.blnoscnvo.BlnoScnUpdateReqVO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;

import java.util.List;

/**
 * 提单收发通信息 Convert
 *
 * @author 集运管理员
 */
@Mapper
public interface BlnoScnConvert {

    BlnoScnConvert INSTANCE = Mappers.getMapper(BlnoScnConvert.class);

    /**
     * 属性转换
     *
     * @param bean bean
     * @return BlnoScnDO BlnoScnDO
     */
    BlnoScnDO convert(BlnoScnCreateReqVO bean);

    /**
     * 属性转换
     *
     * @param bean bean
     * @return BlnoScnDO
     */
    BlnoScnDO convert(BlnoScnUpdateReqVO bean);

    /**
     * 属性转换
     *
     * @param bean bean
     * @return BlnoScnRespVO BlnoScnRespVO
     */
    BlnoScnRespVO convert(BlnoScnDO bean);

    /**
     * 属性转换
     *
     * @param list list
     * @return List<BlnoScnRespVO> List<BlnoScnRespVO>
     */
    List<BlnoScnRespVO> convertList(List<BlnoScnDO> list);

    /**
     * 属性转换
     *
     * @param blnoScnUpdateReqDtoList list
     * @return List<BlnoScnUpdateReqDto> List<BlnoScnUpdateReqDto>
     */
    List<BlnoScnUpdateReqDto> convertBlnoScnUpdateReqDto(List<BlnoScnUpdateReqDto> blnoScnUpdateReqDtoList);

    /**
     * 属性转换
     *
     * @param blnoScnUpdateReqDtoList list
     * @return List<BlnoScnUpdateReqVO> List<BlnoScnUpdateReqVO>
     */
    List<BlnoScnUpdateReqVO> convertBlnoScnUpdateReqVO(List<BlnoScnUpdateReqDto> blnoScnUpdateReqDtoList);

    /**
     * 属性转换
     *
     * @param scnList scnList
     * @return List<BlnoScnUpdateReqVO>
     */
    List<BlnoScnUpdateReqVO> ediConvertBlnoScnUpdateReqVO(List<SiEdiReqVO.Scn> scnList);

    /**
     * 属性转换
     *
     * @param blnoScnUpdateReqVOList lit
     * @return List<BlnoScnUpdateReqDto> List<BlnoScnUpdateReqDto>
     */
    List<BlnoScnUpdateReqDto> convertBlnoScnUpdateReqDtoVo(List<BlnoScnUpdateReqVO> blnoScnUpdateReqVOList);

    /**
     * 属性转换
     *
     * @param blnoScnDos blnoScnDos
     * @return List<BlnoScnRespDto> List<BlnoScnRespDto>
     */
    List<BlnoScnRespDto> convertBlnoScnRespDto(List<BlnoScnDO> blnoScnDos);

}
